<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>XML-RPC</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/XML-RPC"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-XML-RPC rootpage-XML-RPC skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">XML-RPC</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p><b>XML-RPC</b> (<a href="Extensible_Markup_Language" title="Extensible Markup Language">Extensible Markup Language</a> <a href="Remote_Procedure_Call" title="Remote Procedure Call">Remote Procedure Call</a>) ist eine Definition zum Methoden- oder auch Funktionsaufruf durch <a href="Verteiltes_System" title="Verteiltes System">verteilte Systeme</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Allgemeines">Allgemeines</h2></div>
<p>Bei der Spezifikation wurde darauf Wert gelegt, dass eine Implementierung von XML-RPC ohne großen Aufwand in unterschiedlichen <a href="Programmiersprache" title="Programmiersprache">Programmiersprachen</a> und auf unterschiedlichen Systemplattformen möglich ist.
Auch aus diesem Grund wurden zur Realisierung zwei Standards miteinander verbunden:
Für den Transport der Daten wurde auf das <a href="Hypertext_Transfer_Protocol" title="Hypertext Transfer Protocol">Hypertext Transfer Protocol</a> (HTTP) zurückgegriffen, während die Darstellung der übertragenen Daten in der <a href="Extensible_Markup_Language" title="Extensible Markup Language">Extensible Markup Language</a> (XML) geschieht.
</p><p>Die Wahl dieser Standards stellt auch den wesentlichen Unterschied zu älteren RPC-Mechanismen, wie beispielsweise <a href="Remote_Procedure_Call" title="Remote Procedure Call">RPC</a>, <a href="Common_Object_Request_Broker_Architecture" title="Common Object Request Broker Architecture">Corba</a> oder <a href="Distributed_Component_Object_Model" title="Distributed Component Object Model">DCOM</a> dar, bei denen die Daten zumeist in einer (teilweise systemabhängigen: DCOM) binären Darstellung über spezielle Übertragungsprotokolle übermittelt werden.
</p><p>Historisch gesehen ist XML-RPC der Vorgänger von <a href="SOAP" title="SOAP">SOAP</a>, ist im Gegensatz zu diesem jedoch wesentlich schlanker und schneller zu verstehen.
</p><p>Es gibt zahlreiche Implementierungen für viele der heute gängigen Programmiersprachen, die die Basisfunktionalitäten des Methodenaufrufs und der Methodenbehandlung übernehmen.
Zu den Basisfunktionalitäten in diesen Bibliotheken gehören unter anderem:
</p>
<ul><li>Darstellung der <a href="Datentyp" title="Datentyp">Datentypen</a>,</li>
<li>Generierung und Analyse der Aufruf- und der Antwortpakete,</li>
<li>Übertragung und Empfang derselben und</li>
<li>oft auch die Bereitstellung von <a href="Skeleton_(Programmierung)" title="Skeleton (Programmierung)">Skeleton</a> und <a href="Stub_(Programmierung)" title="Stub (Programmierung)">Stub</a> zum einfachen „mit Leben füllen“ des Programmcodes.</li></ul>
<p>Folgende Datentypen sind in XML-RPC definiert:
</p>
<table class="wikitable">
<tbody><tr class="hintergrundfarbe6">
<th>Typname(n) in XML-RPC
</th>
<th>Beschreibung
</th></tr>
<tr>
<td>int, i4
</td>
<td><a href="Integer_(Datentyp)" title="Integer (Datentyp)">Integer (Datentyp)</a>
</td></tr>
<tr>
<td>double
</td>
<td><a href="Gleitkommazahl" title="Gleitkommazahl">Gleitkommazahl</a>
</td></tr>
<tr>
<td>boolean
</td>
<td><a href="Boolesche_Variable" class="mw-redirect" title="Boolesche Variable">Boolesche Variable</a>
</td></tr>
<tr>
<td>string
</td>
<td><a href="Zeichenkette" title="Zeichenkette">Zeichenkette</a>
</td></tr>
<tr>
<td>dateTime.iso8601
</td>
<td>Datum und Uhrzeit ähnlich<sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> dem <a href="ISO_8601" title="ISO 8601">ISO-Format</a>
</td></tr>
<tr>
<td>base64
</td>
<td><a href="Base64" title="Base64">Base64</a>-kodierte binäre Daten
</td></tr></tbody></table>
<p>Mehrere dieser einfachen Datentypen können mittels „struct“ und „array“ zusammengefasst werden.
Ein „struct“ stellt hierbei eine Ansammlung von Schlüssel-Wert-Paaren dar; auf jeden enthaltenen Wert kann also durch einen eindeutigen Schlüssel zugegriffen werden.
Ein „array“ stellt hingegen eine <a href="Liste_(Datenstruktur)" title="Liste (Datenstruktur)">Liste</a> dar; jeder enthaltene Wert wird hierbei eindeutig über seine Position beschrieben.
Neben den einfachen Datentypen können „struct“s und „array“s, wiederum „struct“s und „array“s als Werte enthalten; es lassen sich somit beliebig komplexe Datenstrukturen darstellen.
</p><p>In <a href="Java_(Programmiersprache)" title="Java (Programmiersprache)">Java</a> ist der dem „struct“ entsprechende Datentyp die sogenannte Map (java.util.Map).
Bei den Implementierungen wird allerdings zumeist die Klasse HashTable zur Darstellung verwendet, die die Schnittstelle Map implementiert, aber schon länger in Java existiert.
Der dem „array“ entsprechende Datentyp ist in Java die sogenannte List (java.util.List) oder ein Object-Array.
</p>
<div class="mw-heading mw-heading2"><h2 id="Erweiterungen_des_Standards">Erweiterungen des Standards</h2></div>
<p>Es existieren vielfältige Erweiterungen des Standards, um mutmaßliche Lücken im Standard zu schließen.
Meist beruhen diese Erweiterungen jedoch auf einem Missverständnis, was XML-RPC ist, und gefährden die Interoperabilität unterschiedlicher Systeme.
Daher bieten auch die meisten Implementierungen einen Schalter an, um in einen Kompatibilitätsmodus zu wechseln, in dem nur der Standard unterstützt wird.
</p>
<div class="mw-heading mw-heading3"><h3 id="Null-Datentyp">Null-Datentyp</h3></div>
<p>Die Darstellungen von sogenannten <a href="Nullwert" title="Nullwert">Null-Werten</a> (auch bekannt als NIL, NULL oder NUL) ist mit XML-RPC nicht möglich.
Methoden müssen daher immer einen konkreten Wert zurückgeben, in seltenen Fällen kann dies ein Problem sein.
Es existieren unterschiedliche Erweiterungen des XML-RPC-Standards, um dieses Problem zu beheben, allerdings werden diese Erweiterungen nicht von allen Servern und Clients unterstützt.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Beispiele">Beispiele</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Anfrage">Anfrage</h3></div>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="cp"><?xml version="1.0"?></span>
<span class="w"> </span><span class="nt"><methodCall></span>
<span class="w"> </span><span class="nt"><methodName></span>warenkorb.addPosition<span class="nt"></methodName></span>
<span class="w"> </span><span class="nt"><params></span>
<span class="w"> </span><span class="nt"><param></span>
<span class="w"> </span><span class="nt"><value><string></span>Monitor<span class="nt"></string></value></span>
<span class="w"> </span><span class="nt"></param></span>
<span class="w"> </span><span class="nt"><param></span>
<span class="w"> </span><span class="nt"><value><int></span>10<span class="nt"></int></value></span>
<span class="w"> </span><span class="nt"></param></span>
<span class="w"> </span><span class="nt"></params></span>
<span class="w"> </span><span class="nt"></methodCall></span>
</pre></div>
<div class="mw-heading mw-heading3"><h3 id="Antwort">Antwort</h3></div>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="w"> </span><span class="cp"><?xml version="1.0"?></span>
<span class="w"> </span><span class="nt"><methodResponse></span>
<span class="w"> </span><span class="nt"><params></span>
<span class="w"> </span><span class="nt"><param></span>
<span class="w"> </span><span class="nt"><value><string></span>OK<span class="nt"></string></value></span>
<span class="w"> </span><span class="nt"></param></span>
<span class="w"> </span><span class="nt"></params></span>
<span class="w"> </span><span class="nt"></methodResponse></span>
</pre></div>
<p><i>Code-Beispiel:</i> Linux Documentation Project<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="SOAP" title="SOAP">SOAP</a></li>
<li><a href="Representational_State_Transfer" title="Representational State Transfer">REST</a></li>
<li><a href="Pingback" title="Pingback">Pingback</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://xmlrpc.scripting.com/">Offizielle Startseite</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://groups.yahoo.com/group/xml-rpc/">XML-RPC-Forum</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://www.xml.com/pub/rg/XML_RPC_Tutorials">Anleitungen</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://xml.coverpages.org/xml-rpc.html">Technologie-Berichte</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://xmlrpc-c.sourceforge.net/introspection.html">XML-RPC Introspection</a> (englisch)</li>
<li><a rel="nofollow" class="external text" href="http://effbot.org/zone/xmlrpc-errata.htm">unofficial XML-RPC Errata</a> (englisch)</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text">XML-RPC verwendet die Datumsangabe im Format YYYYmmdd'T'HH:MM:SS und ohne Angabe einer Zeitzone.</span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">beispielsweise: <style data-mw-deduplicate="TemplateStyles:r261891140">
/* start https://de.wikipedia.org/ */
.mw-parser-output .webarchiv-memento a{color:inherit}
/* end https://de.wikipedia.org/ */
</style><a rel="nofollow" class="external text" href="https://web.archive.org/web/20070309154227/http://ontosys.com/xml-rpc/extensions.php">ontosys.com</a> (<span class="webarchiv-memento"><a href="Webarchivierung#Begrifflichkeiten" title="Webarchivierung">Memento</a></span> vom 9. März 2007 im <i><a href="Internet_Archive" title="Internet Archive">Internet Archive</a></i>)</span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><span class="cite">Eric Kidd: <a rel="nofollow" class="external text" href="http://tldp.org/HOWTO/XML-RPC-HOWTO/index.html"><i>XML-RPC HOWTO.</i></a> tldp.org, 12. April 2001,<span class="Abrufdatum"> abgerufen am 14. September 2019</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&rfr_id=info%3Asid%2Fde.wikipedia.org%3AXML-RPC&rft.title=XML-RPC+HOWTO&rft.description=XML-RPC+HOWTO&rft.identifier=&rft.creator=Eric+Kidd&rft.publisher=tldp.org&rft.date=2001-04-12&rft.language=englisch"> </span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2020-01-31" href="https://de.wikipedia.org/wiki/?title=XML-RPC&oldid=196369486">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>